package com.ehsy.config;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.JSONWriter;
import com.dtflys.forest.converter.json.*;
import com.ehsy.model.MyJacksonConverter;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author YanZhen_Li
 * @version 1.0
 * @title ForestConverterConfig
 * @description
 * @create 2024/6/18 15:06
 */
//@Configuration
public class ForestConverterConfig {
    /**
     * Fastjson2 转换器
     */
    /*@Bean
    public ForestJsonConverter forestFastjson2Converter() {
        ForestFastjson2Converter converter = new ForestFastjson2Converter();
        // 设置日期格式
        converter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        // 设置序列化特性
        converter.addWriterFeature(JSONWriter.Feature.IgnoreNoneSerializable);
        // 设置反序列化特性
        converter.addReadFeature(JSONReader.Feature.ErrorOnNoneSerializable);
        return converter;
    }*/

    /**
     * Fastjson转换器
     */
    /*@Bean
    public ForestJsonConverter forestFastjsonConverter() {
        ForestFastjsonConverter converter = new ForestFastjsonConverter();
        // 设置日期格式
        converter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        // 设置序列化特性
        converter.setSerializerFeature(SerializerFeature.IgnoreErrorGetter);
        return converter;
    }*/

    /**
     * Jackson 转换器
     */
    /*@Bean
    public ForestJsonConverter forestJacksonConverter() {
        ForestJacksonConverter converter = new ForestJacksonConverter();
        // 设置日期格式
        converter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        // 获取 Jackson 的 ObjectMapper 对象
        ObjectMapper mapper = converter.getMapper();
        // 通过 ObjectMapper 对象可以对 Jackson 转换器做更细致的设置
        return converter;
    }*/
    /**
     * 直接使用SpringBoot自己的配置信息或我们在上下文中自己定义的jackson配置信息可以使用如下方式
     */
    /*@Bean
    public ForestJsonConverter forestJacksonConverter(ObjectMapper objectMapper) {
        // 注入 SpringBoot 上下文中的 ObjectMapper 对象
        return new ForestJacksonConverter(objectMapper);
    }*/

    /**
     * Gson 转换器
     */
    /*@Bean
    public ForestJsonConverter forestGsonConverter() {
        ForestGsonConverter converter = new ForestGsonConverter();
        // 设置日期格式
        converter.setDateFormat("yyyy-MM-dd HH:mm:ss");
        return converter;
    }*/





//    @Bean
//    public MyJacksonConverter forestFastjson2Converter() {
//        return new MyJacksonConverter();
//    }

}
